Skip to content

节点、树以及虚拟 DOM ​

本节目标:理解“节点、树以及虚拟 DOM”的核心思路,并能把它用于实际开发或面试表达。

说明:原 OneNote 中有图片引用,但图片未包含在导出目录中;本页保留了可用的文字与代码内容。 ==在深入渲染函数之前,了解一些浏览器的工作原理是很重要的。以下面这段== HTML ==为例:==

<div>  <h1>My title</h1>  Some text content  <!-- TODO: Add tagline --></div>

==当浏览器读到这些代码时,它会建立一个====“==DOM ==节点”树====来保持追踪所有内容。上述== HTML ==对应的== DOM ==节点树如下图所示:==

==每个元素都是一个节点。每段文字也是一个节点。甚至注释也都是节点。一个节点就是页面的一个部分。高效地更新所有这些节点会是比较困难的,不过所幸你不必手动完成这个工作。你只需要告诉== Vue ==你希望页面上的== HTML ==是什么,这可以是在:== ==一个模板里:==

<h1>{{ blogTitle }}</h1>

==或者一个渲染函数里:==

render: function (createElement) {  return createElement('h1', this.blogTitle)}

==在这两种情况下,==Vue ==都会自动保持页面的更新,即便== blogTitle ==发生了改变。==

虚拟

 DOM
Vue

==通过建立一个====虚拟== DOM ==来追踪自己要如何改变真实== DOM==。请仔细看这行代码:==

return createElement('h1', this.blogTitle)
createElement

==到底会返回什么呢?其实不是一个==实际的 DOM ==元素。它更准确的名字可能是== createNodeDescription==,因为它所包含的信息会告诉== Vue ==页面上需要渲染什么样的节点,包括及其子节点的描述信息。我们把这样的节点描述为“虚拟节点== (virtual node)==”,也常简写它为“==VNode==”。“虚拟== DOM==”是我们对由== Vue ==组件树建立起来的整个== VNode ==树的称呼。==

本站总访问 — 次